package com.wechat.servlet;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.wechat.DAO.DaoImpl.MessageDAOIpml;
import com.wechat.DAO.MessageDAO;
import com.wechat.pojo.Message;
import com.wechat.servlet.Utils.Base64Encoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

//最重要的服务器！压力很大，我想缓缓
//功能：所有客户端同时轮询这个服务器获取消息数据
//设计思想：建立ServerSocket，将所有接入的客户端访问使用多线程处理，但是因为使用的是同一个DAO也是同一个JDBC用一条数据库连接，可能会产生
//多线程的事务干扰，这对用户数据极不负责，因此采用数据库连接池来进行线程对数据库的调用

//让我缓缓，先写个单线程单连接处理。
public class GetMessageServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String type = request.getParameter("type");
        MessageDAO messageDAO = new MessageDAOIpml();
        List<Message> messages = null;
        if(type.equals("new")){
            messages = messageDAO.getNewMessagesByUsername(username);
        }else if(type.equals("all")){
            messages = messageDAO.getAllMessagesByUsername(username);
        }else {
            response.getWriter().write("fail");
        }
        if(messages == null || messages.isEmpty()){
            response.getWriter().write("null");
            return;
        }

        if(messages!=null && !messages.isEmpty()){
            JSONArray array= JSONArray.parseArray(JSON.toJSONString(messages));
            String json = array.toString();
            String base64 = Base64Encoder.encode(json);
            response.getWriter().write(base64);
        }else {
            response.getWriter().write("fail");
        }
    }
}
